package com.hmdp.utils;

import com.hmdp.dto.UserDTO;


/**
 * UserHolder类用于在ThreadLocal中存储和获取用户信息
 * 提供线程安全的用户数据存储机制
 */
public class UserHolder {
    /**
     * 使用ThreadLocal存储用户信息，确保每个线程都有独立的用户数据副本
     */
    private static final ThreadLocal<UserDTO> tl = new ThreadLocal<>();

    /**
     * 将用户信息保存到当前线程的ThreadLocal中
     * @param user 要保存的用户信息对象，类型为UserDTO
     */
    public static void saveUser(UserDTO user){
        tl.set(user);
    }

    /**
     * 从当前线程的ThreadLocal中获取用户信息
     * @return 返回当前线程中存储的用户信息对象，如果未设置则返回null
     */
    public static UserDTO getUser(){
        return tl.get();
    }

    /**
     * 移除当前线程ThreadLocal中的用户信息
     * 防止内存泄漏，使用完毕后应调用此方法清理数据
     */
    public static void removeUser(){
        tl.remove();
    }
}
